package leetcode;

import java.util.Arrays;

/**
 * @创建人 MBY381
 * @创建时间 2022/3/30 17:32
 * @描述 给你一个整数数组 cost ，其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用，即可选择向上爬一个或者两个台阶。
 * <p>
 * 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
 * <p>
 * 请你计算并返回达到楼梯顶部的最低花费。
 */
public class Solution0746 {
    public static int minCostClimbingStairs(int[] nums) {
        int[] dp = new int[nums.length + 1];
        dp[0] = dp[1] = 0;
        for (int i = 2; i < dp.length; i++) {
            dp[i] = Math.min((dp[i - 2] + nums[i - 2]), (dp[i - 1] + nums[i - 1]));
        }
        System.out.println(Arrays.toString(dp));
        return dp[nums.length];
//        int tag=-1,cost=0;
//        while(tag<nums.length-3){
//            tag=judge(nums,tag);
//            cost+=nums[tag];
//        }
//        cost+=nums[tag];
//        return cost;
    }

    public static int judge(int[] nums, int index) {
        return nums[index + 1] < nums[index + 2] ? index + 1 : index + 2;
    }

    public static void main(String[] args) {
        int[] nums = new int[]{1, 100, 1, 1, 1, 100, 1, 1, 100, 1};
        System.out.println(minCostClimbingStairs(nums));
        ;
    }
}
